package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 设备基础信息对象 device_info
 * 
 * @author hello
 * @date 2025-09-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class DeviceInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 设备ID */
    private Long deviceId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    private String deviceCode;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 设备类型ID */
    @Excel(name = "设备类型ID")
    private Long deviceTypeId;

    /** 设备型号 */
    @Excel(name = "设备型号")
    private String deviceModel;

    /** 设备品牌 */
    @Excel(name = "设备品牌")
    private String deviceBrand;

    /** 安装位置 */
    @Excel(name = "安装位置")
    private String installLocation;

    /** IP地址 */
    @Excel(name = "IP地址")
    private String ipAddress;

    /** 端口号 */
    @Excel(name = "端口号")
    private Long port;

    /** RTMP流地址 */
    @Excel(name = "RTMP流地址")
    private String rtmpUrl;

    /** 设备状态(online=在线/offline=离线/maintenance=维护中/error=故障) */
    @Excel(name = "设备状态(online=在线/offline=离线/maintenance=维护中/error=故障)")
    private String deviceStatus;

    /** 信号强度(0-100) */
    @Excel(name = "信号强度(0-100)")
    private Long signalStrength;

    /** 最后在线时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后在线时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastOnlineTime;

    /** 安装日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "安装日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date installDate;

    /** 保修到期日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保修到期日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date warrantyExpireDate;

    /** 负责人 */
    @Excel(name = "负责人")
    private String responsiblePerson;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 设备参数配置(JSON格式) */
    @Excel(name = "设备参数配置(JSON格式)")
    private String deviceParams;

    /** 是否启用(0=否,1=是) */
    @Excel(name = "是否启用(0=否,1=是)")
    private String isActive;

    public void setDeviceId(Long deviceId) 
    {
        this.deviceId = deviceId;
    }

    public Long getDeviceId() 
    {
        return deviceId;
    }
    public void setDeviceCode(String deviceCode) 
    {
        this.deviceCode = deviceCode;
    }

    public String getDeviceCode() 
    {
        return deviceCode;
    }
    public void setDeviceName(String deviceName) 
    {
        this.deviceName = deviceName;
    }

    public String getDeviceName() 
    {
        return deviceName;
    }
    public void setDeviceTypeId(Long deviceTypeId) 
    {
        this.deviceTypeId = deviceTypeId;
    }

    public Long getDeviceTypeId() 
    {
        return deviceTypeId;
    }
    public void setDeviceModel(String deviceModel) 
    {
        this.deviceModel = deviceModel;
    }

    public String getDeviceModel() 
    {
        return deviceModel;
    }
    public void setDeviceBrand(String deviceBrand) 
    {
        this.deviceBrand = deviceBrand;
    }

    public String getDeviceBrand() 
    {
        return deviceBrand;
    }
    public void setInstallLocation(String installLocation) 
    {
        this.installLocation = installLocation;
    }

    public String getInstallLocation() 
    {
        return installLocation;
    }
    public void setIpAddress(String ipAddress) 
    {
        this.ipAddress = ipAddress;
    }

    public String getIpAddress() 
    {
        return ipAddress;
    }
    public void setPort(Long port) 
    {
        this.port = port;
    }

    public Long getPort() 
    {
        return port;
    }
    public void setRtmpUrl(String rtmpUrl) 
    {
        this.rtmpUrl = rtmpUrl;
    }

    public String getRtmpUrl() 
    {
        return rtmpUrl;
    }
    public void setDeviceStatus(String deviceStatus) 
    {
        this.deviceStatus = deviceStatus;
    }

    public String getDeviceStatus() 
    {
        return deviceStatus;
    }
    public void setSignalStrength(Long signalStrength) 
    {
        this.signalStrength = signalStrength;
    }

    public Long getSignalStrength() 
    {
        return signalStrength;
    }
    public void setLastOnlineTime(Date lastOnlineTime) 
    {
        this.lastOnlineTime = lastOnlineTime;
    }

    public Date getLastOnlineTime() 
    {
        return lastOnlineTime;
    }
    public void setInstallDate(Date installDate) 
    {
        this.installDate = installDate;
    }

    public Date getInstallDate() 
    {
        return installDate;
    }
    public void setWarrantyExpireDate(Date warrantyExpireDate) 
    {
        this.warrantyExpireDate = warrantyExpireDate;
    }

    public Date getWarrantyExpireDate() 
    {
        return warrantyExpireDate;
    }
    public void setResponsiblePerson(String responsiblePerson) 
    {
        this.responsiblePerson = responsiblePerson;
    }

    public String getResponsiblePerson() 
    {
        return responsiblePerson;
    }
    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }
    public void setDeviceParams(String deviceParams) 
    {
        this.deviceParams = deviceParams;
    }

    public String getDeviceParams() 
    {
        return deviceParams;
    }
    public void setIsActive(String isActive) 
    {
        this.isActive = isActive;
    }

    public String getIsActive() 
    {
        return isActive;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("deviceId", getDeviceId())
            .append("deviceCode", getDeviceCode())
            .append("deviceName", getDeviceName())
            .append("deviceTypeId", getDeviceTypeId())
            .append("deviceModel", getDeviceModel())
            .append("deviceBrand", getDeviceBrand())
            .append("installLocation", getInstallLocation())
            .append("ipAddress", getIpAddress())
            .append("port", getPort())
            .append("rtmpUrl", getRtmpUrl())
            .append("deviceStatus", getDeviceStatus())
            .append("signalStrength", getSignalStrength())
            .append("lastOnlineTime", getLastOnlineTime())
            .append("installDate", getInstallDate())
            .append("warrantyExpireDate", getWarrantyExpireDate())
            .append("responsiblePerson", getResponsiblePerson())
            .append("contactPhone", getContactPhone())
            .append("deviceParams", getDeviceParams())
            .append("isActive", getIsActive())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
